<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>get_line_of_sight [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_calibration.html">Calibration</a> / <a href="toc_calibration_inverseprojection.html">Inverse Projection</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">get_line_of_sight</span><span data-if="c" style="display:none;">T_get_line_of_sight</span><span data-if="cpp" style="display:none;">GetLineOfSight</span><span data-if="dotnet" style="display:none;">GetLineOfSight</span><span data-if="python" style="display:none;">get_line_of_sight</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">get_line_of_sight</span><span data-if="c" style="display:none;">T_get_line_of_sight</span><span data-if="cpp" style="display:none;">GetLineOfSight</span><span data-if="dotnet" style="display:none;">GetLineOfSight</span><span data-if="python" style="display:none;">get_line_of_sight</span></code> — Compute the line of sight corresponding to a point in the image.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>get_line_of_sight</b>( :  : <a href="#Row"><i>Row</i></a>, <a href="#Column"><i>Column</i></a>, <a href="#CameraParam"><i>CameraParam</i></a> : <a href="#PX"><i>PX</i></a>, <a href="#PY"><i>PY</i></a>, <a href="#PZ"><i>PZ</i></a>, <a href="#QX"><i>QX</i></a>, <a href="#QY"><i>QY</i></a>, <a href="#QZ"><i>QZ</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_get_line_of_sight</b>(const Htuple <a href="#Row"><i>Row</i></a>, const Htuple <a href="#Column"><i>Column</i></a>, const Htuple <a href="#CameraParam"><i>CameraParam</i></a>, Htuple* <a href="#PX"><i>PX</i></a>, Htuple* <a href="#PY"><i>PY</i></a>, Htuple* <a href="#PZ"><i>PZ</i></a>, Htuple* <a href="#QX"><i>QX</i></a>, Htuple* <a href="#QY"><i>QY</i></a>, Htuple* <a href="#QZ"><i>QZ</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>GetLineOfSight</b>(const HTuple&amp; <a href="#Row"><i>Row</i></a>, const HTuple&amp; <a href="#Column"><i>Column</i></a>, const HTuple&amp; <a href="#CameraParam"><i>CameraParam</i></a>, HTuple* <a href="#PX"><i>PX</i></a>, HTuple* <a href="#PY"><i>PY</i></a>, HTuple* <a href="#PZ"><i>PZ</i></a>, HTuple* <a href="#QX"><i>QX</i></a>, HTuple* <a href="#QY"><i>QY</i></a>, HTuple* <a href="#QZ"><i>QZ</i></a>)</code></p>
<p>
<code>void <a href="HCamPar.html">HCamPar</a>::<b>GetLineOfSight</b>(const HTuple&amp; <a href="#Row"><i>Row</i></a>, const HTuple&amp; <a href="#Column"><i>Column</i></a>, HTuple* <a href="#PX"><i>PX</i></a>, HTuple* <a href="#PY"><i>PY</i></a>, HTuple* <a href="#PZ"><i>PZ</i></a>, HTuple* <a href="#QX"><i>QX</i></a>, HTuple* <a href="#QY"><i>QY</i></a>, HTuple* <a href="#QZ"><i>QZ</i></a>) const</code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>GetLineOfSight</b>(<a href="HTuple.html">HTuple</a> <a href="#Row"><i>row</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Column"><i>column</i></a>, <a href="HTuple.html">HTuple</a> <a href="#CameraParam"><i>cameraParam</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#PX"><i>PX</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#PY"><i>PY</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#PZ"><i>PZ</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#QX"><i>QX</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#QY"><i>QY</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#QZ"><i>QZ</i></a>)</code></p>
<p>
<code>void <a href="HCamPar.html">HCamPar</a>.<b>GetLineOfSight</b>(<a href="HTuple.html">HTuple</a> <a href="#Row"><i>row</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Column"><i>column</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#PX"><i>PX</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#PY"><i>PY</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#PZ"><i>PZ</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#QX"><i>QX</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#QY"><i>QY</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#QZ"><i>QZ</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>get_line_of_sight</b>(<a href="#Row"><i>row</i></a>: Sequence[float], <a href="#Column"><i>column</i></a>: Sequence[float], <a href="#CameraParam"><i>camera_param</i></a>: Sequence[Union[int, float, str]]) -&gt; Tuple[Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[float]]</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">get_line_of_sight</span><span data-if="c" style="display:none">get_line_of_sight</span><span data-if="cpp" style="display:none">GetLineOfSight</span><span data-if="com" style="display:none">GetLineOfSight</span><span data-if="dotnet" style="display:none">GetLineOfSight</span><span data-if="python" style="display:none">get_line_of_sight</span></code> computes the line of sight corresponding
to a pixel (<a href="#Row"><i><code><span data-if="hdevelop" style="display:inline">Row</span><span data-if="c" style="display:none">Row</span><span data-if="cpp" style="display:none">Row</span><span data-if="com" style="display:none">Row</span><span data-if="dotnet" style="display:none">row</span><span data-if="python" style="display:none">row</span></code></i></a>, <a href="#Column"><i><code><span data-if="hdevelop" style="display:inline">Column</span><span data-if="c" style="display:none">Column</span><span data-if="cpp" style="display:none">Column</span><span data-if="com" style="display:none">Column</span><span data-if="dotnet" style="display:none">column</span><span data-if="python" style="display:none">column</span></code></i></a>) in the image.  The line
of sight is a (straight) line in the camera coordinate system, which
is described by two points (<a href="#PX"><i><code><span data-if="hdevelop" style="display:inline">PX</span><span data-if="c" style="display:none">PX</span><span data-if="cpp" style="display:none">PX</span><span data-if="com" style="display:none">PX</span><span data-if="dotnet" style="display:none">PX</span><span data-if="python" style="display:none">px</span></code></i></a>,<a href="#PY"><i><code><span data-if="hdevelop" style="display:inline">PY</span><span data-if="c" style="display:none">PY</span><span data-if="cpp" style="display:none">PY</span><span data-if="com" style="display:none">PY</span><span data-if="dotnet" style="display:none">PY</span><span data-if="python" style="display:none">py</span></code></i></a>,<a href="#PZ"><i><code><span data-if="hdevelop" style="display:inline">PZ</span><span data-if="c" style="display:none">PZ</span><span data-if="cpp" style="display:none">PZ</span><span data-if="com" style="display:none">PZ</span><span data-if="dotnet" style="display:none">PZ</span><span data-if="python" style="display:none">pz</span></code></i></a>) and
(<a href="#QX"><i><code><span data-if="hdevelop" style="display:inline">QX</span><span data-if="c" style="display:none">QX</span><span data-if="cpp" style="display:none">QX</span><span data-if="com" style="display:none">QX</span><span data-if="dotnet" style="display:none">QX</span><span data-if="python" style="display:none">qx</span></code></i></a>,<a href="#QY"><i><code><span data-if="hdevelop" style="display:inline">QY</span><span data-if="c" style="display:none">QY</span><span data-if="cpp" style="display:none">QY</span><span data-if="com" style="display:none">QY</span><span data-if="dotnet" style="display:none">QY</span><span data-if="python" style="display:none">qy</span></code></i></a>,<a href="#QZ"><i><code><span data-if="hdevelop" style="display:inline">QZ</span><span data-if="c" style="display:none">QZ</span><span data-if="cpp" style="display:none">QZ</span><span data-if="com" style="display:none">QZ</span><span data-if="dotnet" style="display:none">QZ</span><span data-if="python" style="display:none">qz</span></code></i></a>) on the line.  The camera is
described by the internal camera parameters <a href="#CameraParam"><i><code><span data-if="hdevelop" style="display:inline">CameraParam</span><span data-if="c" style="display:none">CameraParam</span><span data-if="cpp" style="display:none">CameraParam</span><span data-if="com" style="display:none">CameraParam</span><span data-if="dotnet" style="display:none">cameraParam</span><span data-if="python" style="display:none">camera_param</span></code></i></a>
(see <a href="toc_calibration.html">Calibration</a> for details). If a pinhole camera is
used, the second point lies on the focal plane, i.e., for frame cameras, the
output parameter <a href="#QZ"><i><code><span data-if="hdevelop" style="display:inline">QZ</span><span data-if="c" style="display:none">QZ</span><span data-if="cpp" style="display:none">QZ</span><span data-if="com" style="display:none">QZ</span><span data-if="dotnet" style="display:none">QZ</span><span data-if="python" style="display:none">qz</span></code></i></a> is equivalent to the focal length of
the camera, whereas for linescan cameras, <a href="#QZ"><i><code><span data-if="hdevelop" style="display:inline">QZ</span><span data-if="c" style="display:none">QZ</span><span data-if="cpp" style="display:none">QZ</span><span data-if="com" style="display:none">QZ</span><span data-if="dotnet" style="display:none">QZ</span><span data-if="python" style="display:none">qz</span></code></i></a> also depends
on the motion of the camera with respect to the object.  The
equation of the line of sight is given by
</p>
<p><span title="1" class="displaymath"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="17.6344em" height="3.7116em" viewBox="0 0 282.150024 59.385666">
<!-- Original BoundingBox: -141.075012 -29.692825 141.075012 29.692841 -->
  <defs>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_80">
      <path style="fill-rule: evenodd;" d="M165.000000 -231.000000L296.000000 -231.000000C410.000000 -231.000000,499.000000 -305.000000,499.000000 -398.000000C499.000000 -491.000000,416.000000 -563.000000,310.000000 -563.000000L70.000000 -563.000000C52.000000 -563.000000,43.000000 -556.000000,43.000000 -543.000000C43.000000 -529.000000,52.000000 -522.000000,70.000000 -522.000000L124.000000 -522.000000L124.000000 -41.000000L70.000000 -41.000000C52.000000 -41.000000,43.000000 -34.000000,43.000000 -21.000000C43.000000 -7.000000,52.000000 -0.000000,70.000000 -0.000000L303.000000 -0.000000C321.000000 -0.000000,331.000000 -7.000000,331.000000 -21.000000C331.000000 -34.000000,322.000000 -41.000000,303.000000 -41.000000L165.000000 -41.000000M165.000000 -272.000000L165.000000 -522.000000L314.000000 -522.000000C393.000000 -522.000000,458.000000 -466.000000,458.000000 -398.000000C458.000000 -329.000000,386.000000 -272.000000,299.000000 -272.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_81">
      <path style="fill-rule: evenodd;" d="M305.000000 16.000000C443.000000 12.000000,549.000000 -116.000000,549.000000 -280.000000C549.000000 -445.000000,439.000000 -576.000000,300.000000 -576.000000C161.000000 -576.000000,51.000000 -445.000000,51.000000 -280.000000C51.000000 -139.000000,135.000000 -15.000000,249.000000 10.000000L159.000000 75.000000C152.000000 80.000000,148.000000 86.000000,148.000000 93.000000C148.000000 105.000000,157.000000 114.000000,168.000000 114.000000C171.000000 114.000000,174.000000 113.000000,178.000000 112.000000C221.000000 100.000000,288.000000 89.000000,318.000000 89.000000C343.000000 89.000000,359.000000 92.000000,386.000000 102.000000C415.000000 112.000000,426.000000 115.000000,442.000000 115.000000C484.000000 115.000000,546.000000 84.000000,546.000000 64.000000C546.000000 52.000000,537.000000 43.000000,526.000000 43.000000C522.000000 43.000000,518.000000 44.000000,514.000000 47.000000C483.000000 67.000000,466.000000 74.000000,445.000000 74.000000C432.000000 74.000000,424.000000 72.000000,400.000000 63.000000C370.000000 52.000000,347.000000 48.000000,318.000000 48.000000C297.000000 48.000000,281.000000 50.000000,251.000000 56.000000M300.000000 -535.000000C416.000000 -535.000000,508.000000 -421.000000,508.000000 -277.000000C508.000000 -140.000000,413.000000 -25.000000,300.000000 -25.000000C186.000000 -25.000000,92.000000 -140.000000,92.000000 -280.000000C92.000000 -420.000000,185.000000 -535.000000,300.000000 -535.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_88">
      <path style="fill-rule: evenodd;" d="M325.000000 -288.000000L504.000000 -522.000000L519.000000 -522.000000C537.000000 -522.000000,546.000000 -529.000000,546.000000 -543.000000C546.000000 -557.000000,537.000000 -563.000000,519.000000 -563.000000L408.000000 -563.000000C390.000000 -563.000000,381.000000 -556.000000,381.000000 -543.000000C381.000000 -529.000000,390.000000 -522.000000,408.000000 -522.000000L453.000000 -522.000000L300.000000 -321.000000L145.000000 -522.000000L188.000000 -522.000000C206.000000 -522.000000,215.000000 -529.000000,215.000000 -543.000000C215.000000 -556.000000,206.000000 -563.000000,188.000000 -563.000000L78.000000 -563.000000C60.000000 -563.000000,51.000000 -556.000000,51.000000 -543.000000C51.000000 -529.000000,60.000000 -522.000000,78.000000 -522.000000L93.000000 -522.000000L272.000000 -288.000000L84.000000 -41.000000L67.000000 -41.000000C49.000000 -41.000000,40.000000 -34.000000,40.000000 -21.000000C40.000000 -7.000000,49.000000 -0.000000,67.000000 -0.000000L198.000000 -0.000000C216.000000 -0.000000,225.000000 -7.000000,225.000000 -21.000000C225.000000 -34.000000,216.000000 -41.000000,198.000000 -41.000000L134.000000 -41.000000L298.000000 -255.000000L463.000000 -41.000000L401.000000 -41.000000C383.000000 -41.000000,374.000000 -34.000000,374.000000 -21.000000C374.000000 -7.000000,383.000000 -0.000000,401.000000 -0.000000L533.000000 -0.000000C551.000000 -0.000000,560.000000 -7.000000,560.000000 -21.000000C560.000000 -34.000000,551.000000 -41.000000,533.000000 -41.000000L516.000000 -41.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_89">
      <path style="fill-rule: evenodd;" d="M322.000000 -254.000000L498.000000 -522.000000L522.000000 -522.000000C538.000000 -522.000000,549.000000 -530.000000,549.000000 -543.000000C549.000000 -555.000000,539.000000 -563.000000,522.000000 -563.000000L412.000000 -563.000000C393.000000 -563.000000,384.000000 -556.000000,384.000000 -543.000000C384.000000 -529.000000,393.000000 -522.000000,412.000000 -522.000000L452.000000 -522.000000L303.000000 -295.000000L151.000000 -522.000000L189.000000 -522.000000C207.000000 -522.000000,216.000000 -529.000000,216.000000 -543.000000C216.000000 -556.000000,207.000000 -563.000000,189.000000 -563.000000L78.000000 -563.000000C60.000000 -563.000000,51.000000 -556.000000,51.000000 -543.000000C51.000000 -529.000000,60.000000 -522.000000,78.000000 -522.000000L102.000000 -522.000000L281.000000 -254.000000L281.000000 -41.000000L176.000000 -41.000000C158.000000 -41.000000,149.000000 -34.000000,149.000000 -21.000000C149.000000 -7.000000,158.000000 -0.000000,176.000000 -0.000000L427.000000 -0.000000C445.000000 -0.000000,454.000000 -7.000000,454.000000 -21.000000C454.000000 -34.000000,445.000000 -41.000000,427.000000 -41.000000L322.000000 -41.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_90">
      <path style="fill-rule: evenodd;" d="M497.000000 -0.000000L497.000000 -182.000000C497.000000 -200.000000,490.000000 -209.000000,476.000000 -209.000000C462.000000 -209.000000,456.000000 -200.000000,456.000000 -182.000000L456.000000 -41.000000L142.000000 -41.000000L142.000000 -45.000000L470.000000 -505.000000L470.000000 -563.000000L121.000000 -563.000000L121.000000 -404.000000C121.000000 -385.000000,128.000000 -376.000000,142.000000 -376.000000C155.000000 -376.000000,162.000000 -385.000000,162.000000 -404.000000L162.000000 -522.000000L431.000000 -522.000000L431.000000 -519.000000L103.000000 -59.000000L103.000000 -0.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_43">
      <path style="fill-rule: evenodd;" d="M409.000000 -230.000000L688.000000 -230.000000C702.000000 -230.000000,721.000000 -230.000000,721.000000 -250.000000C721.000000 -270.000000,702.000000 -270.000000,688.000000 -270.000000L409.000000 -270.000000L409.000000 -550.000000C409.000000 -564.000000,409.000000 -583.000000,389.000000 -583.000000C369.000000 -583.000000,369.000000 -564.000000,369.000000 -550.000000L369.000000 -270.000000L89.000000 -270.000000C75.000000 -270.000000,56.000000 -270.000000,56.000000 -250.000000C56.000000 -230.000000,75.000000 -230.000000,89.000000 -230.000000L369.000000 -230.000000L369.000000 50.000000C369.000000 64.000000,369.000000 83.000000,389.000000 83.000000C409.000000 83.000000,409.000000 64.000000,409.000000 50.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_61">
      <path style="fill-rule: evenodd;" d="M687.000000 -327.000000C702.000000 -327.000000,721.000000 -327.000000,721.000000 -347.000000C721.000000 -367.000000,702.000000 -367.000000,688.000000 -367.000000L89.000000 -367.000000C75.000000 -367.000000,56.000000 -367.000000,56.000000 -347.000000C56.000000 -327.000000,75.000000 -327.000000,90.000000 -327.000000M688.000000 -133.000000C702.000000 -133.000000,721.000000 -133.000000,721.000000 -153.000000C721.000000 -173.000000,702.000000 -173.000000,687.000000 -173.000000L90.000000 -173.000000C75.000000 -173.000000,56.000000 -173.000000,56.000000 -153.000000C56.000000 -133.000000,75.000000 -133.000000,89.000000 -133.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmsy10_0">
      <path style="fill-rule: evenodd;" d="M659.000000 -230.000000C676.000000 -230.000000,694.000000 -230.000000,694.000000 -250.000000C694.000000 -270.000000,676.000000 -270.000000,659.000000 -270.000000L118.000000 -270.000000C101.000000 -270.000000,83.000000 -270.000000,83.000000 -250.000000C83.000000 -230.000000,101.000000 -230.000000,118.000000 -230.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmsy10_1">
      <path style="fill-rule: evenodd;" d="M192.000000 -250.000000C192.000000 -279.000000,168.000000 -303.000000,139.000000 -303.000000C110.000000 -303.000000,86.000000 -279.000000,86.000000 -250.000000C86.000000 -221.000000,110.000000 -197.000000,139.000000 -197.000000C168.000000 -197.000000,192.000000 -221.000000,192.000000 -250.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_88">
      <path style="fill-rule: evenodd;" d="M485.000000 -411.000000L401.000000 -610.000000C398.000000 -618.000000,396.000000 -622.000000,396.000000 -623.000000C396.000000 -629.000000,413.000000 -648.000000,455.000000 -652.000000C465.000000 -653.000000,475.000000 -654.000000,475.000000 -671.000000C475.000000 -683.000000,463.000000 -683.000000,460.000000 -683.000000L334.000000 -683.000000L419.000000 -683.000000L376.000000 -680.000000L334.000000 -680.000000L309.000000 -680.000000L247.000000 -683.000000L222.000000 -683.000000C216.000000 -683.000000,204.000000 -683.000000,204.000000 -663.000000C204.000000 -652.000000,214.000000 -652.000000,227.000000 -652.000000C287.000000 -652.000000,293.000000 -642.000000,302.000000 -620.000000L420.000000 -341.000000L209.000000 -114.000000L196.000000 -103.000000C147.000000 -50.000000,100.000000 -34.000000,49.000000 -31.000000C36.000000 -30.000000,27.000000 -30.000000,27.000000 -11.000000C27.000000 -10.000000,27.000000 -0.000000,40.000000 -0.000000L134.000000 -0.000000L70.000000 -0.000000L103.000000 -3.000000L134.000000 -3.000000L171.000000 -3.000000L210.000000 -0.000000L246.000000 -0.000000C252.000000 -0.000000,264.000000 -0.000000,264.000000 -20.000000C264.000000 -30.000000,254.000000 -31.000000,252.000000 -31.000000C243.000000 -32.000000,212.000000 -34.000000,212.000000 -62.000000C212.000000 -78.000000,227.000000 -94.000000,239.000000 -107.000000L341.000000 -215.000000L431.000000 -313.000000L532.000000 -74.000000C536.000000 -63.000000,537.000000 -62.000000,537.000000 -60.000000C537.000000 -52.000000,518.000000 -35.000000,479.000000 -31.000000C468.000000 -30.000000,459.000000 -29.000000,459.000000 -12.000000C459.000000 -0.000000,470.000000 -0.000000,474.000000 -0.000000L600.000000 -0.000000L502.000000 -0.000000L572.000000 -3.000000L600.000000 -3.000000L625.000000 -3.000000L686.000000 -0.000000L711.000000 -0.000000C718.000000 -0.000000,730.000000 -0.000000,730.000000 -19.000000C730.000000 -31.000000,720.000000 -31.000000,712.000000 -31.000000C645.000000 -32.000000,643.000000 -35.000000,626.000000 -75.000000C587.000000 -168.000000,520.000000 -324.000000,497.000000 -384.000000C565.000000 -454.000000,670.000000 -573.000000,702.000000 -601.000000C731.000000 -625.000000,769.000000 -649.000000,829.000000 -652.000000C842.000000 -653.000000,851.000000 -653.000000,851.000000 -672.000000C851.000000 -673.000000,851.000000 -683.000000,838.000000 -683.000000L744.000000 -683.000000L808.000000 -683.000000L775.000000 -680.000000L744.000000 -680.000000L707.000000 -680.000000L669.000000 -683.000000L633.000000 -683.000000C627.000000 -683.000000,614.000000 -683.000000,614.000000 -663.000000C614.000000 -656.000000,619.000000 -653.000000,626.000000 -652.000000C635.000000 -651.000000,666.000000 -649.000000,666.000000 -621.000000C666.000000 -607.000000,655.000000 -594.000000,647.000000 -585.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_89">
      <path style="fill-rule: evenodd;" d="M597.000000 -569.000000L611.000000 -583.000000C641.000000 -613.000000,674.000000 -647.000000,742.000000 -652.000000C753.000000 -653.000000,762.000000 -653.000000,762.000000 -671.000000C762.000000 -679.000000,757.000000 -683.000000,749.000000 -683.000000L667.000000 -683.000000L723.000000 -683.000000L694.000000 -680.000000L667.000000 -680.000000L634.000000 -680.000000L599.000000 -683.000000L567.000000 -683.000000C561.000000 -683.000000,548.000000 -683.000000,548.000000 -664.000000C548.000000 -653.000000,558.000000 -652.000000,563.000000 -652.000000C570.000000 -652.000000,599.000000 -650.000000,599.000000 -629.000000C599.000000 -612.000000,576.000000 -586.000000,572.000000 -581.000000L340.000000 -314.000000L230.000000 -611.000000C224.000000 -625.000000,224.000000 -627.000000,224.000000 -628.000000C224.000000 -652.000000,273.000000 -652.000000,283.000000 -652.000000C297.000000 -652.000000,307.000000 -652.000000,307.000000 -672.000000C307.000000 -683.000000,295.000000 -683.000000,292.000000 -683.000000L166.000000 -683.000000L264.000000 -683.000000L194.000000 -680.000000L166.000000 -680.000000L141.000000 -680.000000L79.000000 -683.000000L54.000000 -683.000000C48.000000 -683.000000,35.000000 -683.000000,35.000000 -663.000000C35.000000 -652.000000,45.000000 -652.000000,58.000000 -652.000000C118.000000 -652.000000,122.000000 -643.000000,131.000000 -618.000000L254.000000 -289.000000C255.000000 -286.000000,258.000000 -275.000000,258.000000 -272.000000C258.000000 -269.000000,218.000000 -108.000000,213.000000 -90.000000C200.000000 -35.000000,199.000000 -32.000000,119.000000 -31.000000C100.000000 -31.000000,92.000000 -31.000000,92.000000 -11.000000C92.000000 -0.000000,104.000000 -0.000000,106.000000 -0.000000L232.000000 -0.000000L134.000000 -0.000000L204.000000 -3.000000L232.000000 -3.000000L260.000000 -3.000000L332.000000 -0.000000L360.000000 -0.000000C367.000000 -0.000000,379.000000 -0.000000,379.000000 -20.000000C379.000000 -31.000000,370.000000 -31.000000,351.000000 -31.000000C349.000000 -31.000000,330.000000 -31.000000,313.000000 -33.000000C292.000000 -35.000000,286.000000 -37.000000,286.000000 -49.000000C286.000000 -56.000000,295.000000 -91.000000,300.000000 -112.000000L335.000000 -253.000000C340.000000 -272.000000,341.000000 -275.000000,349.000000 -284.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_90">
      <path style="fill-rule: evenodd;" d="M720.000000 -659.000000C721.000000 -663.000000,723.000000 -668.000000,723.000000 -674.000000C723.000000 -683.000000,718.000000 -683.000000,698.000000 -683.000000L276.000000 -683.000000C252.000000 -683.000000,251.000000 -682.000000,245.000000 -663.000000L190.000000 -483.000000C188.000000 -478.000000,187.000000 -471.000000,187.000000 -469.000000C187.000000 -468.000000,187.000000 -458.000000,199.000000 -458.000000C208.000000 -458.000000,210.000000 -465.000000,212.000000 -468.000000C250.000000 -586.000000,302.000000 -652.000000,458.000000 -652.000000L621.000000 -652.000000L62.000000 -27.000000C62.000000 -26.000000,58.000000 -12.000000,58.000000 -9.000000C58.000000 -0.000000,65.000000 -0.000000,83.000000 -0.000000L518.000000 -0.000000C542.000000 -0.000000,543.000000 -1.000000,549.000000 -20.000000L620.000000 -241.000000C621.000000 -245.000000,624.000000 -252.000000,624.000000 -256.000000C624.000000 -261.000000,620.000000 -267.000000,611.000000 -267.000000C602.000000 -267.000000,601.000000 -263.000000,594.000000 -242.000000C550.000000 -106.000000,502.000000 -34.000000,332.000000 -34.000000L161.000000 -34.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmmi10_108">
      <path style="fill-rule: evenodd;" d="M258.000000 -683.000000C258.000000 -684.000000,258.000000 -694.000000,245.000000 -694.000000C222.000000 -694.000000,149.000000 -686.000000,123.000000 -684.000000C115.000000 -683.000000,104.000000 -682.000000,104.000000 -663.000000C104.000000 -652.000000,114.000000 -652.000000,129.000000 -652.000000C177.000000 -652.000000,178.000000 -643.000000,178.000000 -635.000000L175.000000 -615.000000L49.000000 -115.000000C46.000000 -104.000000,44.000000 -97.000000,44.000000 -81.000000C44.000000 -24.000000,88.000000 11.000000,135.000000 11.000000C168.000000 11.000000,193.000000 -9.000000,210.000000 -45.000000C228.000000 -83.000000,240.000000 -141.000000,240.000000 -143.000000C240.000000 -153.000000,231.000000 -153.000000,228.000000 -153.000000C218.000000 -153.000000,217.000000 -149.000000,214.000000 -135.000000C197.000000 -70.000000,178.000000 -11.000000,138.000000 -11.000000C108.000000 -11.000000,108.000000 -43.000000,108.000000 -57.000000C108.000000 -81.000000,109.000000 -86.000000,114.000000 -105.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_48">
      <path style="fill-rule: evenodd;" d="M374.000000 1770.000000C396.000000 1770.000000,402.000000 1770.000000,402.000000 1756.000000C404.000000 1055.000000,485.000000 473.000000,835.000000 -16.000000C842.000000 -25.000000,842.000000 -27.000000,842.000000 -29.000000C842.000000 -39.000000,835.000000 -39.000000,819.000000 -39.000000C803.000000 -39.000000,801.000000 -39.000000,799.000000 -37.000000C795.000000 -34.000000,668.000000 112.000000,567.000000 313.000000C435.000000 577.000000,352.000000 880.000000,315.000000 1244.000000C312.000000 1275.000000,291.000000 1483.000000,291.000000 1720.000000L291.000000 1759.000000C292.000000 1770.000000,298.000000 1770.000000,319.000000 1770.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_49">
      <path style="fill-rule: evenodd;" d="M583.000000 1720.000000C583.000000 1109.000000,474.000000 751.000000,443.000000 650.000000C375.000000 428.000000,264.000000 194.000000,97.000000 -12.000000C82.000000 -30.000000,78.000000 -35.000000,74.000000 -37.000000C72.000000 -38.000000,71.000000 -39.000000,55.000000 -39.000000C40.000000 -39.000000,32.000000 -39.000000,32.000000 -29.000000C32.000000 -27.000000,32.000000 -25.000000,45.000000 -7.000000C393.000000 479.000000,471.000000 1079.000000,472.000000 1756.000000C472.000000 1770.000000,478.000000 1770.000000,500.000000 1770.000000L555.000000 1770.000000C576.000000 1770.000000,582.000000 1770.000000,583.000000 1759.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_64">
      <path style="fill-rule: evenodd;" d="M319.000000 -50.000000C298.000000 -50.000000,292.000000 -50.000000,291.000000 -39.000000L291.000000 -0.000000C291.000000 611.000000,400.000000 969.000000,431.000000 1070.000000C499.000000 1292.000000,610.000000 1526.000000,777.000000 1732.000000C792.000000 1750.000000,796.000000 1755.000000,800.000000 1757.000000C802.000000 1758.000000,803.000000 1759.000000,819.000000 1759.000000C835.000000 1759.000000,842.000000 1759.000000,842.000000 1749.000000C842.000000 1747.000000,842.000000 1745.000000,836.000000 1736.000000C503.000000 1274.000000,403.000000 718.000000,402.000000 -36.000000C402.000000 -50.000000,396.000000 -50.000000,374.000000 -50.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmex10_65">
      <path style="fill-rule: evenodd;" d="M583.000000 -39.000000C582.000000 -50.000000,576.000000 -50.000000,555.000000 -50.000000L500.000000 -50.000000C478.000000 -50.000000,472.000000 -50.000000,472.000000 -36.000000C472.000000 67.000000,471.000000 305.000000,445.000000 554.000000C391.000000 1071.000000,258.000000 1429.000000,39.000000 1736.000000C32.000000 1745.000000,32.000000 1747.000000,32.000000 1749.000000C32.000000 1759.000000,40.000000 1759.000000,55.000000 1759.000000C71.000000 1759.000000,73.000000 1759.000000,75.000000 1757.000000C79.000000 1754.000000,206.000000 1608.000000,307.000000 1407.000000C439.000000 1143.000000,522.000000 840.000000,559.000000 476.000000C562.000000 445.000000,583.000000 237.000000,583.000000 -0.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.924988 0.944763)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_48"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.924988 29.637527)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,22.842819 13.697296)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_88"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,23.673065 32.825531)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_89"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,24.060593 51.953918)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_90"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,45.269958 0.944763)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_49"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,45.269958 29.637527)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_65"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,63.645538 32.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_61"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,80.471207 0.944763)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_48"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,80.471207 29.637527)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,102.389221 13.697296)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHpcrr8r_80"></use>
    <use xlink:href="#GLYPHpcrr8r_88" x="6.000092"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,102.389221 32.825531)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHpcrr8r_80"></use>
    <use xlink:href="#GLYPHpcrr8r_89" x="6.000092"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,102.389221 51.953918)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHpcrr8r_80"></use>
    <use xlink:href="#GLYPHpcrr8r_90" x="6.000092"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,129.487717 0.944763)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_49"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,129.487717 29.637527)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_65"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,146.977692 32.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_43"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,162.917908 32.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmmi10_108"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,171.529953 32.985046)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy10_1"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,179.500061 0.944763)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_48"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,179.500061 29.637527)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_64"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,201.418060 13.697296)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHpcrr8r_81"></use>
    <use xlink:href="#GLYPHpcrr8r_88" x="6.000092"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,224.088562 13.697296)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy10_0"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,240.028778 13.697296)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHpcrr8r_80"></use>
    <use xlink:href="#GLYPHpcrr8r_88" x="6.000092"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,201.418060 32.825531)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHpcrr8r_81"></use>
    <use xlink:href="#GLYPHpcrr8r_89" x="6.000092"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,224.088562 32.825531)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy10_0"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,240.028778 32.825531)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHpcrr8r_80"></use>
    <use xlink:href="#GLYPHpcrr8r_89" x="6.000092"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,201.418060 51.953918)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHpcrr8r_81"></use>
    <use xlink:href="#GLYPHpcrr8r_90" x="6.000092"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,224.088562 51.953918)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy10_0"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,240.028778 51.953918)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHpcrr8r_80"></use>
    <use xlink:href="#GLYPHpcrr8r_90" x="6.000092"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,267.127274 0.944763)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_49"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,267.127274 29.637527)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmex10_65"></use>
  </g>
</svg></span>
</p>
<p>The advantage of representing the line of sight as two points is
that it is easier to transform the line in 3D.  To do so, all that
is necessary is to apply 该算子 <a href="affine_trans_point_3d.html"><code><span data-if="hdevelop" style="display:inline">affine_trans_point_3d</span><span data-if="c" style="display:none">affine_trans_point_3d</span><span data-if="cpp" style="display:none">AffineTransPoint3d</span><span data-if="com" style="display:none">AffineTransPoint3d</span><span data-if="dotnet" style="display:none">AffineTransPoint3d</span><span data-if="python" style="display:none">affine_trans_point_3d</span></code></a>
to the two points.</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>Automatically parallelized on internal data level.</li>
  
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Row" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Row</span><span data-if="c" style="display:none">Row</span><span data-if="cpp" style="display:none">Row</span><span data-if="com" style="display:none">Row</span><span data-if="dotnet" style="display:none">row</span><span data-if="python" style="display:none">row</span></code></b> (input_control)  </span><span>real-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Row coordinate of the pixel.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Column" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Column</span><span data-if="c" style="display:none">Column</span><span data-if="cpp" style="display:none">Column</span><span data-if="com" style="display:none">Column</span><span data-if="dotnet" style="display:none">column</span><span data-if="python" style="display:none">column</span></code></b> (input_control)  </span><span>real-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Column coordinate of the pixel.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="CameraParam" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CameraParam</span><span data-if="c" style="display:none">CameraParam</span><span data-if="cpp" style="display:none">CameraParam</span><span data-if="com" style="display:none">CameraParam</span><span data-if="dotnet" style="display:none">cameraParam</span><span data-if="python" style="display:none">camera_param</span></code></b> (input_control)  </span><span>campar <code>→</code> <span data-if="dotnet" style="display:none"><a href="HCamPar.html">HCamPar</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[int, float, str]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">Internal camera parameters.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="PX" class="parname"><b><code><span data-if="hdevelop" style="display:inline">PX</span><span data-if="c" style="display:none">PX</span><span data-if="cpp" style="display:none">PX</span><span data-if="com" style="display:none">PX</span><span data-if="dotnet" style="display:none">PX</span><span data-if="python" style="display:none">px</span></code></b> (output_control)  </span><span>real-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">X coordinate of the first point on the line of sight
in the camera coordinate system</p>
</div>
  <div class="par">
<div class="parhead">
<span id="PY" class="parname"><b><code><span data-if="hdevelop" style="display:inline">PY</span><span data-if="c" style="display:none">PY</span><span data-if="cpp" style="display:none">PY</span><span data-if="com" style="display:none">PY</span><span data-if="dotnet" style="display:none">PY</span><span data-if="python" style="display:none">py</span></code></b> (output_control)  </span><span>real-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Y coordinate of the first point on the line of sight
in the camera coordinate system</p>
</div>
  <div class="par">
<div class="parhead">
<span id="PZ" class="parname"><b><code><span data-if="hdevelop" style="display:inline">PZ</span><span data-if="c" style="display:none">PZ</span><span data-if="cpp" style="display:none">PZ</span><span data-if="com" style="display:none">PZ</span><span data-if="dotnet" style="display:none">PZ</span><span data-if="python" style="display:none">pz</span></code></b> (output_control)  </span><span>real-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Z coordinate of the first point on the line of sight
in the camera coordinate system</p>
</div>
  <div class="par">
<div class="parhead">
<span id="QX" class="parname"><b><code><span data-if="hdevelop" style="display:inline">QX</span><span data-if="c" style="display:none">QX</span><span data-if="cpp" style="display:none">QX</span><span data-if="com" style="display:none">QX</span><span data-if="dotnet" style="display:none">QX</span><span data-if="python" style="display:none">qx</span></code></b> (output_control)  </span><span>real-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">X coordinate of the second point on the line of sight
in the camera coordinate system</p>
</div>
  <div class="par">
<div class="parhead">
<span id="QY" class="parname"><b><code><span data-if="hdevelop" style="display:inline">QY</span><span data-if="c" style="display:none">QY</span><span data-if="cpp" style="display:none">QY</span><span data-if="com" style="display:none">QY</span><span data-if="dotnet" style="display:none">QY</span><span data-if="python" style="display:none">qy</span></code></b> (output_control)  </span><span>real-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Y coordinate of the second point on the line of sight
in the camera coordinate system</p>
</div>
  <div class="par">
<div class="parhead">
<span id="QZ" class="parname"><b><code><span data-if="hdevelop" style="display:inline">QZ</span><span data-if="c" style="display:none">QZ</span><span data-if="cpp" style="display:none">QZ</span><span data-if="com" style="display:none">QZ</span><span data-if="dotnet" style="display:none">QZ</span><span data-if="python" style="display:none">qz</span></code></b> (output_control)  </span><span>real-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Z coordinate of the second point on the line of sight
in the camera coordinate system</p>
</div>
<div data-if="hdevelop" style="display:inline">
<h2 id="sec_example_hdevelop">例程 (HDevelop)</h2>
<pre class="example">
* Set internal camera parameters.
* Note the, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, 30, 4.65e-006, 4.65e-006, \
                                640, 480, 1280, 960, CameraParam)
* Inverse projection.
get_line_of_sight([50, 100], [100, 200], CameraParam, PX, PY, PZ, QX, QY, QZ)
</pre>
</div>
<div data-if="c" style="display:none">
<h2 id="sec_example_c">例程 (HDevelop)</h2>
<pre class="example">
* Set internal camera parameters.
* Note the, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, 30, 4.65e-006, 4.65e-006, \
                                640, 480, 1280, 960, CameraParam)
* Inverse projection.
get_line_of_sight([50, 100], [100, 200], CameraParam, PX, PY, PZ, QX, QY, QZ)
</pre>
</div>
<div data-if="cpp" style="display:none">
<h2 id="sec_example_cpp">例程 (HDevelop)</h2>
<pre class="example">
* Set internal camera parameters.
* Note the, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, 30, 4.65e-006, 4.65e-006, \
                                640, 480, 1280, 960, CameraParam)
* Inverse projection.
get_line_of_sight([50, 100], [100, 200], CameraParam, PX, PY, PZ, QX, QY, QZ)
</pre>
</div>
<div data-if="com" style="display:none">
<h2 id="sec_example_com">例程 (HDevelop)</h2>
<pre class="example">
* Set internal camera parameters.
* Note the, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, 30, 4.65e-006, 4.65e-006, \
                                640, 480, 1280, 960, CameraParam)
* Inverse projection.
get_line_of_sight([50, 100], [100, 200], CameraParam, PX, PY, PZ, QX, QY, QZ)
</pre>
</div>
<div data-if="dotnet" style="display:none">
<h2 id="sec_example_dotnet">例程 (HDevelop)</h2>
<pre class="example">
* Set internal camera parameters.
* Note the, typically, these values are the result of a prior
* calibration.
gen_cam_par_area_scan_division (0.01, 30, 4.65e-006, 4.65e-006, \
                                640, 480, 1280, 960, CameraParam)
* Inverse projection.
get_line_of_sight([50, 100], [100, 200], CameraParam, PX, PY, PZ, QX, QY, QZ)
</pre>
</div>
<h2 id="sec_result">结果</h2>
<p><code><span data-if="hdevelop" style="display:inline">get_line_of_sight</span><span data-if="c" style="display:none">get_line_of_sight</span><span data-if="cpp" style="display:none">GetLineOfSight</span><span data-if="com" style="display:none">GetLineOfSight</span><span data-if="dotnet" style="display:none">GetLineOfSight</span><span data-if="python" style="display:none">get_line_of_sight</span></code> returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
     if all parameter values are
correct.  如有必要，将引发异常。</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="read_cam_par.html"><span data-if="hdevelop" style="display:inline">read_cam_par</span><span data-if="c" style="display:none">read_cam_par</span><span data-if="cpp" style="display:none">ReadCamPar</span><span data-if="com" style="display:none">ReadCamPar</span><span data-if="dotnet" style="display:none">ReadCamPar</span><span data-if="python" style="display:none">read_cam_par</span></a></code>, 
<code><a href="camera_calibration.html"><span data-if="hdevelop" style="display:inline">camera_calibration</span><span data-if="c" style="display:none">camera_calibration</span><span data-if="cpp" style="display:none">CameraCalibration</span><span data-if="com" style="display:none">CameraCalibration</span><span data-if="dotnet" style="display:none">CameraCalibration</span><span data-if="python" style="display:none">camera_calibration</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="affine_trans_point_3d.html"><span data-if="hdevelop" style="display:inline">affine_trans_point_3d</span><span data-if="c" style="display:none">affine_trans_point_3d</span><span data-if="cpp" style="display:none">AffineTransPoint3d</span><span data-if="com" style="display:none">AffineTransPoint3d</span><span data-if="dotnet" style="display:none">AffineTransPoint3d</span><span data-if="python" style="display:none">affine_trans_point_3d</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="camera_calibration.html"><span data-if="hdevelop" style="display:inline">camera_calibration</span><span data-if="c" style="display:none">camera_calibration</span><span data-if="cpp" style="display:none">CameraCalibration</span><span data-if="com" style="display:none">CameraCalibration</span><span data-if="dotnet" style="display:none">CameraCalibration</span><span data-if="python" style="display:none">camera_calibration</span></a></code>, 
<code><a href="disp_caltab.html"><span data-if="hdevelop" style="display:inline">disp_caltab</span><span data-if="c" style="display:none">disp_caltab</span><span data-if="cpp" style="display:none">DispCaltab</span><span data-if="com" style="display:none">DispCaltab</span><span data-if="dotnet" style="display:none">DispCaltab</span><span data-if="python" style="display:none">disp_caltab</span></a></code>, 
<code><a href="read_cam_par.html"><span data-if="hdevelop" style="display:inline">read_cam_par</span><span data-if="c" style="display:none">read_cam_par</span><span data-if="cpp" style="display:none">ReadCamPar</span><span data-if="com" style="display:none">ReadCamPar</span><span data-if="dotnet" style="display:none">ReadCamPar</span><span data-if="python" style="display:none">read_cam_par</span></a></code>, 
<code><a href="project_3d_point.html"><span data-if="hdevelop" style="display:inline">project_3d_point</span><span data-if="c" style="display:none">project_3d_point</span><span data-if="cpp" style="display:none">Project3dPoint</span><span data-if="com" style="display:none">Project3dPoint</span><span data-if="dotnet" style="display:none">Project3dPoint</span><span data-if="python" style="display:none">project_3d_point</span></a></code>, 
<code><a href="affine_trans_point_3d.html"><span data-if="hdevelop" style="display:inline">affine_trans_point_3d</span><span data-if="c" style="display:none">affine_trans_point_3d</span><span data-if="cpp" style="display:none">AffineTransPoint3d</span><span data-if="com" style="display:none">AffineTransPoint3d</span><span data-if="dotnet" style="display:none">AffineTransPoint3d</span><span data-if="python" style="display:none">affine_trans_point_3d</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Calibration</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
